package com.spirng.leetcode.day07;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

public class Test501 {
    public static void main(String[] args) {
        TreeNode treeNode = new TreeNode(0);
        Test501 test501 = new Test501();
        test501.findMode(treeNode);
    }
    ArrayList <Integer>arrayList=new ArrayList<Integer>();
    TreeNode pre;
    int res=1;
    int Max=1;
    public int[] findMode(TreeNode root) {
        findNode(root);
        int[] ints = new int[arrayList.size()];
        for (int i = 0; i < arrayList.size(); i++) {
            ints[i]=arrayList.get(i);
        }
        return ints;
    }
    public void findNode(TreeNode node){
        if(node==null){
            return;
        }
        findNode(node.left);
        int intValue= node.val;
       if(pre==null||intValue!= pre.val){
           res=1;
       }else {
           res++;
       }
        if(res>Max){
            arrayList.clear();
            arrayList.add(intValue);
            Max=res;
        } else if (res==Max) {
            arrayList.add(intValue);
        }
        pre=node;
        findNode(node.right);
    }
    public void findNode1(TreeNode node){
        if(node==null){
            return;
        }
        findNode1(node.left);
        if (pre==null||pre.val != node.val){
            res=1;
        }else {
            res++;
        }
        if(res>Max){
            arrayList.clear();
            arrayList.add(node.val);
            Max=res;
        }else if (res==Max){
            arrayList.add(node.val);
        }
        pre=node;
        findNode1(node.right);
    }
}
